/*
    This file is part of Posixcpp library.

    Posixcpp library is free software: you can redistribute it and/or
    modify it under the terms of the GNU Lesser General Public License
    as published by the Free Software Foundation, either version 3 of
    the License, or (at your option) any later version.

    Posixcpp library is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.

    You should have received a copy of the GNU LesserGeneral Public
    License along with Posixcpp library. If not, see
    <http://www.gnu.org/licenses/>.
*/

#include "posix_threads_barrier.hpp"

using namespace posix::threads;

Barrier::Barrier( int count ) :
m_count(count)
{
    POSIX_CALL_ASSERT_X( (errno=pthread_barrier_init(&this->m_handle,
        NULL, m_count))==0, "Unable to initialize barrier" );
}

Barrier::~Barrier()
{
    POSIX_CALL_ASSERT_X( (errno=pthread_barrier_destroy(&this->m_handle))==0,
        "Unable to desctroy barrier" );
}
